/**
 * 
 */
package com.autosalon.ui.spravaPojisteni.action;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.autosalon.DAO.DaoFactory;
import com.autosalon.model.Poisteni;
import com.autosalon.model.Poistovna;
import com.autosalon.ui.spravaPojisteni.SpravaPojisteni;
import com.autosalon.ui.spravaPojisteni.state.SpravaPojisteniStateHolder;
import com.vaadin.ui.Button.ClickEvent;

/**
 * @author Ragisel
 *
 */
public class SavePojisteniAction extends AbstractSpravaPojisteniAction {

	private Poisteni pojisteni;
	private final int id_role = 3;
	/**
	 * @param spravaPojisteni
	 */
	public SavePojisteniAction(SpravaPojisteni spravaPojisteni) {
		super(spravaPojisteni);
	}

	@Override
	public void buttonClick(ClickEvent event) {

		try {
			pojisteni = new Poisteni();
			Object pojistovna = spravaPojisteni.getCbPojistovna().getValue();
			List<Object> pojistovny = new ArrayList<Object>();
			pojistovny = DaoFactory.getinstance().getPoistovna()
					.getAll(0, Integer.MAX_VALUE);
			Long id_poistovny = 0l;
			for (Object o : pojistovny) {
				Poistovna vybranaPojistovna = (Poistovna) o;
				if (vybranaPojistovna.getNazevPoistovny().equals(pojistovna.toString()))
					id_poistovny = vybranaPojistovna.getId();
			}
			Poistovna poistovna = (Poistovna) DaoFactory.getinstance().getPoistovna().getById(id_poistovny);
			Date konDatum = (Date) spravaPojisteni.getPopupKonec().getValue();
			Date pocDatum = (Date) spravaPojisteni.getPopupPocatek().getValue();
			pojisteni.setPoistovna(poistovna);
			pojisteni.setKonDatum(new java.sql.Date(konDatum.getTime()));
			pojisteni.setPocDatum(new java.sql.Date(pocDatum.getTime()));
			if (spravaPojisteni.getId_pojisteni() == null) {
				DaoFactory.getinstance().getPoisteni().insert(pojisteni);
				spravaPojisteni.naplnTabulkuObjednavky();
				SpravaPojisteniStateHolder.setState(
						SpravaPojisteniStateHolder.VIEW_POJISTENI_STATE, id_role,
						spravaPojisteni);
			} else {
				pojisteni.setId(spravaPojisteni.getId_pojisteni());
				DaoFactory.getinstance().getPoisteni().update(pojisteni);
				spravaPojisteni.setId_pojisteni(null);
				spravaPojisteni.naplnTabulkuObjednavky();
				SpravaPojisteniStateHolder.setState(
						SpravaPojisteniStateHolder.VIEW_POJISTENI_STATE, id_role,
						spravaPojisteni);
			}
		} catch (Exception e) {
			e.printStackTrace();
			spravaPojisteni.getWindow().showNotification("Zadané vstupy nebyly korektní. Pokuste se je prosím opravit");
			SpravaPojisteniStateHolder.setState(
					SpravaPojisteniStateHolder.EDIT_POJISTENI_STATE, id_role,
					spravaPojisteni);
		}
	}

}
